草庐IT

C++ 内存分配

全部标签

c# - 正确使用 CryptoAPITransform?内存泄漏

我已将一段使用CryptoAPI的旧非托管代码移植到100%托管.NET代码。该代码使用了DES算法,由于多种原因不得不对其进行维护。由于从CreateDecryptor和CreateEncryptor方法获得的CryptoAPITransform实例被标记为可重用,我想只创建它们的实例并在需要时使用它们。看起来代码有效,但它导致了内存泄漏,所以决定每次都创建和处理一个实例。到目前为止它似乎没有泄漏,但我想知道我之前是否一直使用错误,如果是这样,我是否可以重用这些实例。该应用程序是多线程的,同时进行大量操作,因此可能存在线程问题,尽管我找不到任何异常或损坏的消息。此外,我的所有操作都是

windows - 在 gtk_widget_queue_draw 中 Windows 7 下 GTK 中的内存泄漏

下面的GTK程序:#includeGtkVBox*vbox;GtkWindow*win;gbooleanTimer(gpointeruser_data){gtk_widget_queue_draw(GTK_WIDGET(vbox));return1;}intmain(intargc,char**argv){gtk_init(&argc,&argv);win=(GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);vbox=(GtkVBox*)gtk_vbox_new(TRUE,1);gtk_container_add(GTK_CONTAINER(

windows - 如何为自定义文件类型分配图标?

有没有办法在C或C++中执行此操作(我知道它可以在C#中完成,所以如果您知道如何操作,它也会有所帮助!)?我想要的是一种通过我自己的应用程序自动将自定义文件扩展名与自定义图标相关联的方法。例如,可以使所有当前和后续的.foo文件都有自己的图像,而不是默认的乏味的白纸页。就像Java对.jar文件和Dev-C++在安装时对.c和.cpp所做的一样。通过我的研究,我发现了很多关于Shell之类的东西的相关信息。我结束了自己在thispage,尽管它所说的看起来可行,但我根本不知道如何实现它,也不知道它到底是什么。对不起,如果我听起来很笨!操作系统是Windows。

ruby-on-rails - Rails guard 内存不足

我是Rails开发的新手,但我对guard有很大的疑问。我正在使用guard自动测试我的应用程序,但我不断收到以下错误消息[FATAL]failedtoallocatememory有人知道是什么原因造成的吗?我在Windows7x64机器上使用Ruby1.9.3和最新版本的guard。[编辑]在我删除wdmgem之后,似乎不再出现此错误。有什么想法吗? 最佳答案 我想出了答案,它被覆盖了here. 关于ruby-on-rails-Railsguard内存不足,我们在StackOverfl

Windows内核内存保护

Windows中每个进程的高端内存(0x80000000或0xc0000000)为内核代码保留,用户代码无法访问这些内存区域,如果尝试访问将抛出访问冲突异常。我想知道内核空间是如何保护的?是通过内存分段还是通过分页?我想听听技术解释。非常感谢,迈克尔。 最佳答案 假设您正在谈论x86和x64架构。内存保护是使用分页系统实现的。x86/x64CPU上的每个页表条目都有一个位来指示它是用户页还是主管页。只有使用CPLCPL是“当前特权级别”,有时也称为Ring。Windows仅使用两个环,尽管CPU实现了4个环。环0是Windows称为

为两个不同的进程创建共享内存

因此,我尝试在C程序中创建一个共享内存段,这样我就可以在其中写入一个简单的字符,然后从另一个C程序中读取该字符。我一直在尝试使用calloc()和malloc()但我相信这只适用于该程序自己的heap.是否有另一个函数可以做同样的事情,但在RAM内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了对所有进程可见的内存?提前致谢。编辑:-我正在使用Windows8。-语言不限于C,可以是任何其他语言。 最佳答案 有很多InterprocessCommunications当您需要在隔离的进程之间传输数据时,您可以选择。共享一bl

C++:查找内存映射文件的瓶颈

我有一个内存映射文件,我使用MemCpy从中获取数据。有时它快如闪电,有时却出奇地慢。例如:一次0.15毫秒,然后相同的操作6秒。我不确定瓶颈在哪里或如何解决。因此,我认为我需要做一些相当“深入”的分析,以找出究竟是什么导致MemCpy操作有时如此缓慢。有人可以建议我应该如何跟踪问题吗? 最佳答案 我想你可能想用VirtualLockLocksthespecifiedregionoftheprocess'svirtualaddressspaceintophysicalmemory,ensuringthatsubsequentacce

Windows 内存管理 : check if a page is in memory

在Windows中,有没有办法检查页面是在内存中还是在磁盘(交换空间)中?我想知道这一点的原因是,如果页面在磁盘中,则通过不访问该页面来避免导致页面错误。 最佳答案 据我所知,没有记录在案的方法可以在用户模式下完成此操作。也就是说,可以在内核模式下确定这一点,但这将涉及检查属于内存管理器的页表条目——这不是您在任何类型的生产代码中真正不想做的事情.您要解决的真正问题是什么? 关于Windows内存管理:checkifapageisinmemory,我们在StackOverflow上找到一

windows - VirtualProtect 如何改变内存保护标志

VirtualProtect的第三个参数可以使用如下标志:PAGE_EXECUTEPAGE_NOACCESSPAGE_READWRITEPAGE_READONLY...一开始我觉得VirtualProtect可以通过PTE的flag来实现。但是当我阅读PTE的结构时,我在PTE中找不到记录这个函数的第3个参数的标志。PTE的结构如下:抱歉,我无法发布图片(因为没有10个声誉!),您可以从Google找到它。我想找Windows在哪里记录了一个虚拟内存页的保护标志,不是PTE吗?看了一些资料,我发现当一个PTE无效时,PTE的字段的意思就变了!然后有5位保护标志。

windows - Hyper-V WMI 类的哪些属性可以访问内存信息

我想使用Hyper-VWMI类获取虚拟机的内存。有4个内存等级;但我找不到它们的任何属性来获取内存值。Msvm_Memory类具有BlockSize和NumberOfBlocks属性。当我将它们相乘时,我无法得到正确的内存。关于https://msdn.microsoft.com/en-us/library/hh850175(v=vs.85).aspx这已经是错误的做法。BlockSizeDatatype:uint64Accesstype:Read-onlyThesize,inbytes,oftheblocksthatformthestorageextent.Ifvariableblo